1. Field
The following description relates to a technology of a parallel computing framework.
2. Description of the Related Art
Parallel computing refers to a form of computation in which many calculations are carried out simultaneously, operating on the principle that large problems can often be divided into smaller ones, which are then solved concurrently. There are several different forms of parallel computing: bit-level, instruction level, data, and task parallelism. Parallelism has been employed for many years, mainly in high-performance computing, but interest in it has grown lately due to the physical constraints preventing frequency scaling. As power consumption by computers has become a concern in recent years, parallel computing has become the dominant paradigm in computer architecture, mainly in the form of multicore processors.
A typical framework for parallel computers is OpenCL. OpenCL is a framework for writing programs that execute across heterogeneous platforms consisting of Central Processing Units (CPUs), Graphics Processing Units (GPUs), and other processors. OpenCL includes a language base on C99 for wiring kernels and Application Programming Interfaces (APIs) that are used to define and then control the platforms. OpenCL provides parallel computing using task-based and data-based parallelism.
Generally, OpenCL operates in a single node system, not in a cluster system which is nowadays widely used. Hence, if a user wants to write an application for OpenCL, the user has to use a message programming library to access a network. Such inconvenience makes it difficult to write an application. On top of that, even though the user adds a code for OpenCL on his own, OpenCL may not operate in a single node system.